import pygame.font


class Scoreboard():
    """显示得分信息的类"""
    def __init__(self, ai_settings, screen, stats):
        self.ai_settings = ai_settings
        self.screen = screen
        self.screen_rect = screen.get_rect()
        self.stats = stats

        # 得分字体用什么颜色显示
        self.text_color = (30,30,30)
        # 创建一个字体对象（需要先创建完字体对象，才能创建Surface）
        # name=None：表示使用系统默认字体
        self.font = pygame.font.SysFont(None, 48)

        # 初始得分图像
        self.prep_score()

    def prep_score(self):
        """将得分转换为一副渲染的图像"""
        rounded_score = int(round(self.stats.score, -1))
        score_str = "{:,}".format(rounded_score)

        #字符串（得分）渲染成一张图像（Surface）
        self.score_image = self.font.render(score_str, True, self.text_color, self.ai_settings.bg_color)
        # 将得分放置在屏幕右上角
        self.score_rect = self.score_image.get_rect()
        self.score_rect.right = self.screen_rect.right - 20
        self.score_rect.top = 20

    def draw_score(self):
        # blit 渲染方法，接收 渲染图 以及位置
        # 渲染图中存储者渲染颜色，数据等信息
        self.screen.blit(self.score_image, self.score_rect)